第71篇:某银行外网打点到内网核心区红队评估复盘
Part1 前言
大家好,我是ABC_123。本期分享一篇ABC_123曾经做的针对一家银行的红队评估项目,持续时间两周,难度非常大,但是最终打到了银行核心业务区,今天就复盘一下全过程,希望红蓝双方都能得到一些启示,这也是“未知攻、焉知防”的道理。
建议大家把公众号“希潭实验室”设为星标,否则可能就看不到啦!因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。
Part2 具体过程复盘
首先放出一张ABC_123绘制的关于此次红队评估项目的流程图,接下来依据此流程图,详细讲解整个红队评估过程。
外网打点过程
一般来讲,针对银行项目,如果不用0day是很难打穿的。本次红队评估项目,在外网打点方面,付出的代价是用了2个0day:1、通过日志信息泄露定位到一个供应链系统,代码审计出一个0day漏洞,是上传漏洞;2、某文档在线预览系统的命令注入漏洞。
在内网横向过程中用了2个漏洞:1、某业务的端口存在java反序列化漏洞;2、Websphere中间件的几个端口存在的Java反序列化漏洞。
1 供应链系统的上传漏洞
首先通过扫目录,发现一个/logs路径,里面有一些Web应用程序的报错信息,从中发现了一个不常见的jar包类名。
接下来通过各种百度、谷歌、Github使用上述关键字搜索,找到了该系统的开发厂商,后续通过一些列方法获取源代码。源码目录结构与网站相差无几,基本上证明是同一套源码,然后通过Java代码审计出来一处上传漏洞,可惜需要登录后台才能用。走投无路的时候,翻了翻源码中的初始化sql文件,发现系统在启动过程中,会执行这些sql文件,从而默认会添加一个测试账号,于是使用此测试账号,登录后台获取webshell,后续主要的内网横向是通过这个入口开展的。
2 ColdFusion反序列化
旗下网站存在Coldfusion反序列化漏洞,该漏洞在我之前的文章有详细介绍《coldfusion反序列化过waf改exp拿靶标的艰难过程》,接下来利用此系统的代码执行漏洞获取了第2个Webshell权限。这里指出一点,对于coldfusion漏洞的利用,推荐使用网上的可以直接执行命令的方法,尽量不要用出网JRMPClient的利用方式,这种方法多次发包后,很容易造成coldfusion网站停止响应,具体原因不明,这是经验之谈,踩过的坑。
由此系统开展内网横向,但阻力非常大,网络隔离做得非常好,对于内网其它的IP地址,基本上都是只能ping通,端口不通,因此只能重新进行外网打点。
3 某文档在线预览系统命令注入
这个漏洞是一个普通的命令注入漏洞,直接GET传参,导入runtime执行,非常简单的一个命令注入漏洞。但是该系统是放在云上的,资产非常少,配置文件中也没有发现阿里云AK/SK等秘钥,最后就是可以查询一些员工的姓名、用户名列表。
4 网盘信息泄露
通过网盘搜索方法,对各种敏感关键字进行检索,发现了一个员工离职交接文档的压缩包,解压后1G多,里面存放了大量的网络拓扑图及通讯录信息,对后渗透了解网络架构起到了很大帮助。
注:网盘搜索需要分情况而论,那些经历过很多轮攻防比赛及红队评估比赛的目标,网盘检索已经很难发现有价值的信息了,在早期这种方式能获取很多有价值的信息。
内网横向过程
该银行内网资产中Websphere中间件和Oracle数据库特别多,所以内网横向过程主要通过以下两个方向展开:
1 Websphere中间件漏洞。Websphere中间件在8880、2809、9100、11006等端口均存在java反序列化漏洞,可以拿到权限。
2 Oracle数据库权限。通过翻Web应用的配置文件,将加密密码解密,然后连上Oracle数据库,通过Oracle提权漏洞获取服务器权限。
外网其它漏洞
除了通过0day漏洞打点,在外网还发现了很多Web应用层面的漏洞,其中包括SQL注入漏洞、短信炸弹、APP客户端漏洞、密码重置、Nginx解析漏洞、遍历交易记录、爆破弱口令等等,通过这些漏洞获取到了一些敏感信息,对后期渗透有很大帮助。接下来我挑选几个比较有代表性的漏洞讲一讲。
1 培训系统上传漏洞,可上传html页面
如下图所示,可以直接上传html文件,如果在html文件里插入XSS攻击代码,就相当于变相创造一个存储型XSS漏洞,或者可以上传一个钓鱼页面,用作水坑攻击。以下本机虚拟机中的截图,是效果图。
2 DOM型XSS漏洞
DOM型XSS由于其特殊机制,可以绕过所有的waf拦截。
https://www.xxx.com/xxx/include/resources/reload.html#vbscript:msgbox(1)
3 任意文件读取漏洞
这是外网的一个系统,存在任意文件读取,绕过waf的方法如下:
4 宽字节吃掉转义字符造成XSS
这里无论怎么操作,xxs的payload都会落在双引号内被当作字符串而无法执行,这时候可以尝试用宽字节方法,吃掉临近的转义字符反斜杠,从而继续XSS。如下图的箭头所示,图片裂开显示,说明xss代码得到了解析执行。
5 短信炸弹绕过限制
这个短信炸弹比较有意思,对手机号一分钟内发短信的次数做了限制,但是可以在手机号后面不断叠加%20(空格的url编码)方式绕过,通过Burpsuite的intruder模块添加N次%20造成短信轰炸。
6 删除sign参数绕过校验
有时候会遇到如下这种情况,使用burpsuite抓包后,重放数据包会提示MAC校验失败,这种情况比较难办,在本次案例中,尝试删除sign字段,就不会提示“MAC校验失败”了。
7 使用Frida解决APP参数加密
8 审计JS代码,解决Web传参加密
在JS代码的登录事件处的下断点,发现数据包通过$.jCryption.encrypt(tempS, ***, ***)这个函数加密,其中加密key是固定值,直接使用$.jCryption.decrypt(***,password);可以解密数据包。数据包解密之后,发现了多处逻辑漏洞、越权漏洞。
9 其它Web应用漏洞
此外就是在外网中挖到的一些Web应用漏洞,都是比较常见的漏洞,不过多叙述大致总结如下:
1. Springboot框架的heapdump文件下载,从中可以翻到账号密码,还有Springboot的/env地址泄露内网ip地址,方便后续渗透定位内网ip。
2. 公众号上面有一处链接,连接到第三方网站,该网站居然有nginx解析漏洞。获取shell之后,发现用处不大,是个孤岛服务器,除了一个mysql数据库之外,没有多少有价值的信息。
3. 外网几处SQL注入漏洞,这个就不多说了,都是Mysql数据库,而且非root权限,进一步利用非常困难。最终获取到了对后续渗透有价值的员工姓名、手机号、工号。
4. Github源码泄露,在github上搜索到了部分源码和邮箱地址。
5. 外网业务系统的逻辑漏洞,原报告的截图就不贴出来了,因为逻辑漏洞的截图打码是很容易遗漏的。基本上都是一些交易记录越权查询、账单平衡越权查询、还款计划越权查询等等,方法无一例外,就是改各种参数的值,看是否有越权漏洞。
6. 再一个就是有一些废弃的上传功能,但是从网页的js中,上传功能的地址还存在,构造好上传包,就发现了一个上传漏洞,但是只能上传html文件。在之前的案例中,曾经获取过权限。
7. APP客户端漏洞。APP弱加壳:这个是靠Xposed对app进行hook,然后使用callMethod方法dump出hook到的类,然后进行反编译。这里不过多叙述,APP脱壳我研究得极少;IPA客户端的某秘钥泄露:使用IDA Pro对IPA客户端进行反编译,从中寻找硬编码,找到了一处敏感信息泄露。
社会工程学攻击
如下图所示,以下是社会工程学攻击过程,总体来说,不太成功,因为该银行严格限制了出网规则,由于不出网,针对客服系统的XSS钓鱼及针对银行员工的邮件钓鱼均没有成功。
1 微*信聊天发送压缩包
通过前期信息收集,再结合外网web应用系统找到的sql注入漏洞、云上数据库权限等,得到了一个手机号列表,通过这些手机号挨个加微*信聊天,发送带有压缩包的后门,但是能上线的都是个人笔记本电脑,办公网电脑是绝对不允许通外网的,登录不了微信,所以微*信社工这一思路很快被停止。
2 邮箱伪造发信人地址攻击
通过对邮件系统的检测,发现邮件系统存在伪造任意源邮箱地址漏洞,结合Kali Linux的swaks工具可以以任意管理员身份发送钓鱼邮件,并且可以绕过防钓鱼邮件网关。此次红队评估过程,成功假冒银行信息部管理员(admin@xxbank.com.cn)身份发送了钓鱼邮件,但是最后居然一个都没有上线的,后来了解到,员工登录邮箱环境不通外网。
大致命令如下:swaks --to zhangsan@xxbank.com.cn -f test@xxbank.com.cn --server mail.xxbank.com.cn -p 2525 -au--ehlo xxbank.com.cn --h-From "XXX银行信息部<admin@xxbank.com.cn>" --header "Subject:XXX银行信息部" --body "hello,您的邮件我已收到."
物理渗透阶段
在得到客户的授权许可情况下,和几个同事一起开车去总行周边转了好几圈,强行进入总行内部看起来可能性不大,于是把重心放在wifi热点上。经过探测发现了2个wifi热点,其中有一个被万能钥匙收录,可以直接连上测试区网段;第2个wifi热点,需要提供密码,此密码正好在内网文档中找到,所以两个wifi热点均被拿下,但是都只是能通测试区或者是能上外网的互联网区。
随后使用平板电脑放在附近,反弹出一个socks5代理,交给后面同事们对内网测试区进行横向渗透,但是非常遗憾的是,测试区放置的都是一些测试系统,网络隔离非常严格,测试区与生产区完全隔离,无法连到总行的办公网或者业务网。有时候在测试区系统上存在一些**业务系统的war包等敏感信息。
内网横向漏洞都是比较常规的,比如说MS17-010漏洞获取windows系统权限,zabbix可以执行命令,API网关管理员弱口令、移动办公系统的姓名、手机号信息,商户管理系统的shiro反序列化等等,这里就不过多叙述了。
Part4 总结
1. 银行红队评估项目一般难度都非常大,多数都得靠0day,靠代码审计,现在红队人员基本上靠供应链的漏洞打进去的情况较多,供应链安全防护也是重中之重。
2. 外网的那些无法拿权限的漏洞,在后渗透阶段,会提供很好的信息支持。sql注入、弱口令可以帮助红队人员了解业务系统用户名的命名方式,内网ip地址泄露在后渗透阶段可以用于快速定位ip段,所以这些中低危漏洞也要及时修复。
3. 物理渗透的Wifi热点的安全问题,也很常见,有时候装一个万能钥匙之类的软件,就能起到很大效果。
4. 有的云上的系统也可以尝试一下获取webshell,因为有些云上系统的代码中,会有阿里云、腾讯云的AK/SK等,如果碰到一个,一下子拿一片服务器权限。
5. 遇到参数加密的情况,如果是手机APP,可以试试Frida;如果是Web应用,可以试试找到javascript解密函数。
公众号专注于网络安全技术分享,包括APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。
Contact me: 0day123abc#gmail.com(replace # with @)